diff -Naur zathura-cb-0.1.0/cb.c zathura-cb-0.1.0.patched/cb.c
--- zathura-cb-0.1.0/cb.c	2012-06-09 17:48:13.000000000 -0400
+++ zathura-cb-0.1.0.patched/cb.c	2012-07-22 15:06:18.000000000 -0400
@@ -1,7 +1,9 @@
 /* See LICENSE file for license and copyright information */
 
-#include <stdlib.h>
 #include <stdio.h>
+#include <unistd.h>
+#include <limits.h>
+#include <stdlib.h>
 #include <glib.h>
 #include <gtk/gtk.h>
 #include <glib/gstdio.h>
@@ -11,7 +13,7 @@
 #include "utils.h"
 
 struct cb_document_s {
-  char* directory; /**< Path to the directory */
+  char directory[4096]; /**< Path to the directory */
   girara_list_t* page_paths; /**< List of page paths */
 };
 
@@ -58,8 +60,8 @@
   cb_document_t* cb_document = g_malloc0(sizeof(cb_document));
 
   /* create temp directory */
-  cb_document->directory = g_dir_make_tmp("zathura-cb-XXXXXX", NULL);
-  if (cb_document->directory == NULL) {
+  sprintf(cb_document->directory, "%s/zathura-cb-XXXXXX", g_get_tmp_dir());
+  if(mkdtemp(cb_document->directory) == NULL) {
     goto error_free;
   }
 
@@ -148,18 +150,18 @@
     return ZATHURA_ERROR_INVALID_ARGUMENTS;
   }
 
-  /* remove temp directory */
-  if (cb_document->directory != NULL) {
-    g_remove(cb_document->directory);
-  }
-
   /* remove page list */
   if (cb_document->page_paths != NULL) {
+    char *path;
+    GIRARA_LIST_FOREACH(cb_document->page_paths, char*, iter, path)
+      g_remove(path);
+    GIRARA_LIST_FOREACH_END(cb_document->page_paths, char*, iter, path);
     girara_list_free(cb_document->page_paths);
   }
 
+  /* remove temp directory */
   if (cb_document->directory != NULL) {
-    g_free(cb_document->directory);
+    g_remove(cb_document->directory);
   }
 
   g_free(cb_document);
